using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Merge Mosaic Dataset Items</para>
    /// <para>Groups multiple items in a mosaic dataset together as one item.</para>
    /// <para>将镶嵌数据集中的多个项目组合为一个项目。</para>
    /// </summary>    
    [DisplayName("Merge Mosaic Dataset Items")]
    public class MergeMosaicDatasetItems : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MergeMosaicDatasetItems()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset that has the items that you want to merge.</para>
        /// <para>包含要合并的项的镶嵌数据集。</para>
        /// </param>
        public MergeMosaicDatasetItems(object _in_mosaic_dataset)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Merge Mosaic Dataset Items";

        public override string CallName => "management.MergeMosaicDatasetItems";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _where_clause, _block_field, _max_rows_per_merged_items, _out_mosaic_dataset];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset that has the items that you want to merge.</para>
        /// <para>包含要合并的项的镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Query Definition</para>
        /// <para>An SQL expression to select specific rasters to merge in the mosaic dataset.</para>
        /// <para>用于选择要合并到镶嵌数据集中的特定栅格的 SQL 表达式。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Query Definition")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _where_clause { get; set; } = null;


        /// <summary>
        /// <para>Block Field</para>
        /// <para>The field in the attribute table that you want to use to group images. Only date, numeric, and string fields can be specified as Block fields.</para>
        /// <para>属性表中要用于对图像进行分组的字段。只能将日期、数值和字符串字段指定为块字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Block Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _block_field { get; set; } = null;


        /// <summary>
        /// <para>Maximum Allowed Rows Per Merged Item</para>
        /// <para>Limits the number of items to merge. If the maximum is exceeded, the tool will create multiple merged items. The default is 1,000 rows.</para>
        /// <para>限制要合并的项数。如果超过最大值，该工具将创建多个合并项目。默认值为 1,000 行。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Allowed Rows Per Merged Item")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _max_rows_per_merged_items { get; set; } = 1000;


        /// <summary>
        /// <para>Updated Mosaic Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_mosaic_dataset { get; set; }


        public MergeMosaicDatasetItems SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}